home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / utilitys / 76 / gemboot.11 / gemboot.doc < prev    next >
Encoding:
Text File  |  1987-09-03  |  8.8 KB  |  190 lines

  1. Documentation of the archive GEMB1V10.ARC
  2.  
  3.  
  4.  
  5. Contained files:
  6.  
  7.   1)  GEMBOOT.PRG   the GEM booter V1.10
  8.  
  9.   2)  GEMBOOT.INF   GEMBOOT parameter file example
  10.  
  11.   3)  COMMAND.TOS   a PD command shell
  12.  
  13.   4)  DESKENV.TTP   environment string setter for DESKTOP
  14.  
  15.   5)  GEMFRL.TOS    prints status of GEMDOS internal system memory free lists 
  16.  
  17.   6)  GEMBOOT.DOC   (this file)
  18.  
  19.  
  20.  
  21. ##############################################
  22.  
  23. # Copyright (c) of GEMBOOT.PRG, DESKENV.TTP  #
  24.  
  25. #                  GEMFRL.TOS                #
  26.  
  27. #                                            #
  28.  
  29. # by  Konrad A. Hahn                         #        
  30.  
  31. #     Karlstr.19                             #
  32.  
  33. #     D-6109 Muehltal                        #
  34.  
  35. #     W.-Germany                             #
  36.  
  37. #                                            #
  38.  
  39. # Permission of charge free copy and usage   #
  40.  
  41. # only for noncommercial users               #
  42.  
  43. ##############################################
  44.  
  45.  
  46.  
  47. GEMBOOT.PRG  V1.10
  48.  
  49. ------------------
  50.  
  51. GEMBOOT serves as a plaster for the old TOS problem: "the 40 folder limit".
  52.  
  53. The so called "40 folder limit" is a two fold TOS bug.
  54.  
  55. The system crashes are caused by GEMDOS being "out of system memory".
  56.  
  57. GEMDOS has a limited system memory area of 3000 words used for memory
  58.  
  59. descriptors, media descriptors, directory cache blocks, etc.
  60.  
  61. Each cached directory needs 66 words of the system memory.
  62.  
  63. Together with the system blocks added by AHDI.PRG this gives you a total
  64.  
  65. capacity of 85 folders on your non-GEMBOOT-enhanced system (including
  66.  
  67. floppies).
  68.  
  69.  
  70.  
  71. Even if you hold your system below this limit you will get into trouble.
  72.  
  73. Tracing GEMDOS internal data I found most system memory overflows being
  74.  
  75. forced by multiple duplicates of directory cache blocks.
  76.  
  77. Obviously GEMDOS sometimes forgets to set a special flag in the parent
  78.  
  79. directory cache block, which should indicate that subdirectories have
  80.  
  81. been cached.
  82.  
  83. Thus next time GEMDOS needs a file located in this directory it creates
  84.  
  85. another set of subdirectory cache blocks.
  86.  
  87. This happens on and on until the flag gets set (or until system crash).
  88.  
  89. So the system memory gets totally trashed with useless duplicates and
  90.  
  91. is overflowed finally.
  92.  
  93. Since hard disks have fixed media you never get rid of these duplicates.
  94.  
  95. With floppy drives you have a chance because all assigned directory cache
  96.  
  97. blocks are released after a media change.
  98.  
  99.  
  100.  
  101. GEMBOOT protects the system by linking fresh cache blocks to the system
  102.  
  103. and scanning all hard disk directories with Fsfirst()-Fsnext().
  104.  
  105. Thus GEMDOS is forced to build up a complete, errorfree directory cache tree.
  106.  
  107. The cache blocks created by this procedure have their "flags" set and
  108.  
  109. prevent GEMDOS from generating duplicates.
  110.  
  111.  
  112.  
  113. The number of cache blocks initially allocated and linked to the system free
  114.  
  115. lists is determined by the variable FOLDERS.
  116.  
  117. Besides this GEMBOOT may add chunks of fresh cache blocks to the system
  118.  
  119. during the directory scan. This "incremental add" happens each time GEMBOOT
  120.  
  121. detects the cache block free list being empty.
  122.  
  123. The size of the cache block chunks is determined by the variable FOLDERINC.
  124.  
  125. Since the memory for each chunk is allocated seperately it costs additional
  126.  
  127. system memory for the memory descriptors.
  128.  
  129.  
  130.  
  131. Furthermore GEMBOOT provides a 256 character environment buffer for DESKTOP,
  132.  
  133. which may be modified by the program DESKENV.TTP.
  134.  
  135. Last not least it has a build in startup batch feature which uses a standard
  136.  
  137. command shell without creating a "memory hole" in front of resident programs.
  138.  
  139. A ramdisk installation program can be supplied with params within our startup
  140.  
  141. batch procedure.
  142.  
  143.  
  144.  
  145. Note:
  146.  
  147. After the login phase GEMBOOT lists the number of directories found and the
  148.  
  149. free cache space left. The latter count only depends on the number of system
  150.  
  151. blocks in the free list. The left unpartitioned system memory is not counted.
  152.  
  153. Thus you may have more space for hard disk folders, but it is better to spare
  154.  
  155. this memory for memory descriptors and floppy disk folders.
  156.  
  157.  
  158.  
  159. ############### Installation and customization ##################
  160.  
  161.  
  162.  
  163. Put GEMBOOT.PRG and GEMBOOT.INF in the AUTO directory of your boot disk.
  164.  
  165. Be sure that GEMBOOT is the last file in the AUTO exec sequence because
  166.  
  167. DESKTOP is booted without leaving GEMBOOT.
  168.  
  169. GEMBOOT.INF contains variable assignment lines of the form
  170.  
  171. <variable>=<value><crlf>
  172.  
  173. and may be modified to serve your needs.
  174.  
  175.  
  176.  
  177. Following variables are local to GEMBOOT V1.10:
  178.  
  179. Name          Range       Default        Meaning
  180.  
  181. -------------------------------------------------------------------------
  182.  
  183. FOLDERS       1 : 1000    150            dir. cache blocks added to system
  184.  
  185. FOLDERINC     0 : 100     20             chunk size of incremental add
  186.  
  187. MEMBLOCKS     0 : 5000    0              mem. descriptors added to system
  188.  
  189. BATCHSELECT   OFF : ON    ON             manual batch file selection
  190.  
  191. BATCHFILE                 \AUTO\*.BAT    batch file search pattern
  192.  
  193. BATCHSHELL                \COMMAND.TOS   batch shell
  194.  
  195. SHELLSIZE     0 : MAXMEM  $82F8          shell load size (in bytes)
  196.  
  197. ENVBUFSIZE    12 : 4096   256            env. string buffer size (in bytes)
  198.  
  199. SYSMEMFRL     0 : $FFFFFF $56FA          addr. of GEMDOS free list ptr array   
  200.  
  201.  
  202.  
  203. Assignments to variables different to the above are treated as DESKTOP
  204.  
  205. environment variable definitions and are included in the DESKTOP environment
  206.  
  207. string.
  208.  
  209. The default 256 character environment string buffer provided for DESKTOP is
  210.  
  211. initiated to "PATH=;X:\" (X = boot drive).
  212.  
  213. Resizing the env. buffer by "ENVBUFSIZE=..." does also initialize the buffer
  214.  
  215. to the above string.
  216.  
  217. Thus your DESKTOP environment definitions must follow the "ENVBUFSIZE=..."
  218.  
  219. assignment to survive the resizing.
  220.  
  221.  
  222.  
  223. Be aware that each directory cache block costs 132 bytes, and each memory
  224.  
  225. descriptor 18 bytes of your TPA.
  226.  
  227. The allocated system blocks and the env. string buffer reside at the top
  228.  
  229. of the TPA.
  230.  
  231.  
  232.  
  233. For the startup batch feature put COMMAND.TOS (included in the archive) into
  234.  
  235. the root directory of your boot drive.
  236.  
  237. You can direct GEMBOOT to use a different shell by the assignments
  238.  
  239. "BATCHSHELL=<file spec.>" and "SHELLSIZE=<load size in bytes>"
  240.  
  241. The used shell must be able to accept a batch file parameter.
  242.  
  243. With the program GEMMEM you can find out the load size of your shell.
  244.  
  245. The batch shell will be loaded at the top of the TPA, so programs staying
  246.  
  247. resident may be executed without creating a "memory hole".
  248.  
  249. At boot time GEMBOOT is looking for a batch file using the value string of
  250.  
  251. variable BATCHFILE as a search pattern.
  252.  
  253. If the value is the zero-string (BATCHFILE=<crlf>) the boot batch feature
  254.  
  255. is disabled.
  256.  
  257. With BATCHSELECT=OFF the first file found will be used without asking.
  258.  
  259. With BATCHSELECT=ON up to 9 files found will be listed and you may select
  260.  
  261. one to be executed by the shell.
  262.  
  263.  
  264.  
  265. Dependences:
  266.  
  267. GEMBOOT uses the system variable exec_os to find the GEM startup procedure.
  268.  
  269. GEMBOOT uses a GEMDOS internal pointer array at SYSMEMFRL to find the system
  270.  
  271. memory free lists.
  272.  
  273.  
  274.  
  275.  
  276.  
  277. DESKENV.TTP
  278.  
  279. -----------
  280.  
  281. DESKENV prints or modifies the contents of the DESKTOP environment string
  282.  
  283. buffer provided by GEMBOOT.
  284.  
  285.  
  286.  
  287. EBNF-Syntax:
  288.  
  289. DESKENV [ (<variable>'='<value> | <variable>) {' ' (...)} ]
  290.  
  291.  
  292.  
  293. brackets:
  294.  
  295. '' for terminals, <> for nonterminals, () for grouping with | as alternative
  296.  
  297. separator, [] for options (0 or 1), {} for repetitions (0 or more)
  298.  
  299.  
  300.  
  301. If called without parameter the current environment variable assignments
  302.  
  303. will be printed.
  304.  
  305. Called with an assignment string as parameter (name string followed by
  306.  
  307. 'equal' and a value string) DESKENV modifies or adds the variable definition
  308.  
  309. to the environment string.
  310.  
  311. Called with an environment variable name without following 'equal' removes
  312.  
  313. the variable definition from the environment string.
  314.  
  315.  
  316.  
  317. Examples:
  318.  
  319. "DESKENV LIBPATH=\USR\LIB\" sets the variable LIBPATH to value \USR\LIB\.
  320.  
  321. "DESKENV LIBPATH" removes the variable LIBPATH.
  322.  
  323.  
  324.  
  325. If the value string contains white-space characters the assignment must be
  326.  
  327. quoted.
  328.  
  329. Example:
  330.  
  331. DESKENV 'HEADER=***** Keep hands off !!! *****'
  332.  
  333.  
  334.  
  335. Note:
  336.  
  337. DESKTOP internally sets the first character of the PATH variable to ';'.
  338.  
  339. Thus the first character of your PATH value should be ';'
  340.  
  341. (i.e. DESKENV PATH=;<path1>;<path2>;...) to leave the following path string
  342.  
  343. intact.
  344.  
  345.  
  346.  
  347.  
  348.  
  349. GEMFRL.TOS
  350.  
  351. ----------
  352.  
  353. This program finds the GEMDOS internal system memory free lists and prints
  354.  
  355. the current status.
  356.  
  357. If the address of the located pointer array is different to $56FA the
  358.  
  359. GEMBOOT variable SYSMEMFRL must be set to the found address value.
  360.  
  361. GEMDOS uses type-1 blocks for memory descriptors and type-4 blocks for
  362.  
  363. directory caching.
  364.  
  365.  
  366.  
  367.  
  368.  
  369. COMMAND.TOS
  370.  
  371. -----------
  372.  
  373. A PD command shell used by GEMBOOT.
  374.  
  375. May be used for other purposes too.
  376.  
  377. Enter '?' for a command list.
  378.  
  379.